iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Software Development

從無到有,LINE著不走系列 第 24

Day 24: 優化 Line Bot 的用戶體驗

  • 分享至 

  • xImage
  •  

在第 24 天,我們將專注於提升 Line Bot 的用戶體驗,通過改善與用戶之間的互動方式和界面來增加使用的舒適度和便利性。好的用戶體驗不僅能讓用戶更喜歡使用你的 Bot,還能減少錯誤發生的頻率,提升整體使用效果。

步驟 1:設計更自然的對話流程

  1. 添加預設的快捷回應選項

    • 在回應中提供多個選項按鈕(Quick Reply),讓用戶可以快速點擊選擇,而不需要手動輸入。
    • 快捷回應能引導用戶進行下一步行動,減少輸入的負擔,同時能避免用戶輸入不準確的消息。
    from linebot.models import QuickReply, QuickReplyButton, MessageAction
    
    @handler.add(MessageEvent, message=TextMessage)
    def handle_text_message(event):
        quick_reply_buttons = QuickReply(items=[
            QuickReplyButton(action=MessageAction(label="查詢天氣", text="查詢天氣")),
            QuickReplyButton(action=MessageAction(label="查看新聞", text="查看新聞")),
            QuickReplyButton(action=MessageAction(label="幫助", text="幫助"))
        ])
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text="請選擇您的需求:", quick_reply=quick_reply_buttons)
        )
    
  2. 設計對話路徑

    • 構建一個簡單的對話流程圖,設計不同的分支,確保用戶可以順暢地完成目標。例如,在查詢天氣功能中,設計用戶可以選擇查詢城市,然後獲取具體天氣。
    • 使用 Flowchart 等工具繪製對話路徑,以便在構建和優化 Bot 時能夠有明確的參考。
  3. 錯誤處理的友好提示

    • 當用戶輸入錯誤或無法理解的內容時,提供友好的提示,並且附帶幾個用戶可能想要的選項,而不是簡單地回應“無法理解”。
    @handler.add(MessageEvent, message=TextMessage)
    def handle_text_message(event):
        user_message = event.message.text
        if user_message not in ["查詢天氣", "查看新聞", "幫助"]:
            quick_reply_buttons = QuickReply(items=[
                QuickReplyButton(action=MessageAction(label="查詢天氣", text="查詢天氣")),
                QuickReplyButton(action=MessageAction(label="查看新聞", text="查看新聞")),
                QuickReplyButton(action=MessageAction(label="幫助", text="幫助"))
            ])
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="抱歉,我不明白您的意思,請選擇一個選項:",
                    quick_reply=quick_reply_buttons
                )
            )
        else:
            # 正常處理邏輯
            pass
    

步驟 2:使用豐富的消息類型

  1. 使用圖文消息和模板消息

    • 單純的文本消息可能過於單調,可以使用圖文混排的消息來豐富交互。例如,當用戶查詢新聞時,可以返回含有圖片、標題、摘要和按鈕的模板消息。
    from linebot.models import ButtonsTemplate, TemplateSendMessage, URITemplateAction
    
    @handler.add(MessageEvent, message=TextMessage)
    def handle_text_message(event):
        if event.message.text == "查看新聞":
            buttons_template = ButtonsTemplate(
                title='今日新聞', text='點擊下方按鈕查看詳細內容', actions=[
                    URITemplateAction(label='新聞標題1', uri='https://news.example.com/1'),
                    URITemplateAction(label='新聞標題2', uri='https://news.example.com/2')
                ])
            template_message = TemplateSendMessage(
                alt_text='查看新聞', template=buttons_template)
            line_bot_api.reply_message(event.reply_token, template_message)
    
  2. 加入富有表情和Emoji的回應

    • 使用 Line 提供的 Emoji 來增加回應的趣味性,讓用戶覺得更加有趣和生動。例如,在天氣回應中加入太陽或雨傘的 Emoji 來更形象地表達天氣狀況。
    from linebot.models import TextSendMessage
    
    @handler.add(MessageEvent, message=TextMessage)
    def handle_text_message(event):
        if event.message.text == "查詢天氣":
            text_message = TextSendMessage(text="今日天氣 ☀️:晴朗,溫度 25°C")
            line_bot_api.reply_message(event.reply_token, text_message)
    
  3. 使用Flex Message 進行自定義消息排版

    • Flex Message 允許你自由地定義消息的排版,可以讓消息更具結構性和美觀。
    • 例如,可以為電商類 Bot 提供商品的多欄展示,讓用戶能夠快速瀏覽和選擇。

步驟 3:提高用戶錯誤輸入的容錯性

  1. 使用模糊匹配技術

    • 如果用戶輸入的內容有小的拼寫錯誤,Bot 可以通過模糊匹配來嘗試理解用戶的意圖。可以使用 fuzzywuzzy 這樣的 Python 庫來實現。
    from fuzzywuzzy import process
    
    VALID_OPTIONS = ["查詢天氣", "查看新聞", "幫助"]
    
    @handler.add(MessageEvent, message=TextMessage)
    def handle_text_message(event):
        user_message = event.message.text
        best_match, score = process.extractOne(user_message, VALID_OPTIONS)
        if score > 70:
            # 假如相似度超過70%,視為匹配成功
            user_message = best_match
        else:
            line_bot_api.reply_message(event.reply_token, TextSendMessage(text="對不起,我不明白您的請求。"))
            return
    
        # 根據處理後的 user_message 進行相應操作
    
  2. 為常見的錯誤輸入提供建議

    • 在處理一些典型錯誤輸入時,Bot 可以提供建議或預測用戶的意思。例如,當用戶輸入“天氣查詢”而非“查詢天氣”時,Bot 能給出正確的指引。

步驟 4:引導用戶進行互動

  1. 提供新功能提示

    • 當增加了新功能時,可以在回應中告知用戶這些新功能,並鼓勵用戶嘗試。例如,“現在我們提供最新的電影推薦,輸入‘推薦電影’來查看!”
  2. 保持持續的交互

    • 在用戶每次操作結束時,建議下一步可以進行的操作。例如,在回應用戶天氣查詢後,可以提示用戶查看當地的新聞。
    @handler.add(MessageEvent, message=TextMessage)
    def handle_text_message(event):
        if event.message.text == "查詢天氣":
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="今日天氣 ☀️:晴朗,溫度 25°C\n您還可以:\n1. 查看本地新聞\n2. 查詢明日天氣")
            )
    

步驟 5:多語言支持

  1. 提供多語言選項

    • 如果你的用戶基礎較為多樣化,考慮為 Bot 增加多語言支持。讓用戶選擇語言(例如中文、英文),並根據選擇進行相應的語言處理。
    @handler.add(MessageEvent, message=TextMessage)
    def handle_text_message(event):
        user_message = event.message.text
        if user_message == "選擇語言":
            quick_reply_buttons = QuickReply(items=[
                QuickReplyButton(action=MessageAction(label="中文", text="語言:中文")),
                QuickReplyButton(action=MessageAction(label="English", text="語言:English"))
            ])
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="請選擇您的語言:", quick_reply=quick_reply_buttons)
            )
    

上一篇
Day 23: 優化 Line Bot 的回應速度
下一篇
Day 25: 優化 Line Bot 的個性化互動
系列文
從無到有,LINE著不走30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言